package com.wanxi;

public class ReadMe {
    /**
     * 2023-1-31 http和tomcat和servlet
     * 1.http：协议特点
     * 2.get和post的区别？
     *      1）get请求有大小限制 post没有
     *      2）安全：get请求会出现在浏览器地址，post不用
     *      3）请求刷新时，post会重新提交数据
     *      4）get请求会缓存，post不会
     *      5）get请求速度更快，因为直接走缓存
     *      6）每次必须请求后台，就是必须是新请求，不要走缓存，最好用post
     *      7）get请求必须是字符串，post请求所有格式（文件，图片，视频，字符）
     * 3.web访问后台需要一个容器：tomcat容器
     * 4.下载按照tomcat 注意：版本 servlet 4.0  tomcat 9.0 jdk 1.8（安装包）
     *      1)下载tomcat 9.*
     *      2）下载安装包（不用配置环境变量），不要下载压缩包（需要配置环境变量）
     *      3）注意：port修改为大于等于0即可：默认是-1
     *      4）安装tomcat之前需要安装JDK
     *      5）怎么运行tomcat，标识已经安装成功？
     *          找到服务，直接启动即可：访问：http://localhost:8080/
     * 5.创建JavaWeb项目
     *      1）直接创建一个maven项目
     *      2）添加web服务支持
     *      3）添加tomcat
     *      4）启动项目
     * 6.为什么能够直接访问到index.jsp页面？
     * 7.SERVLET 导入servlet的jar包
     *      1)怎么得到servlet的包？两种方式：
     *      百度 直接搜索，
     *      官网 https://search.maven.org/
     * 8.servlet 需要实现里面的所有方法
     * 9.执行时，调用service
     * 10.servlet的生命周期：初始化 init，执行service，销毁destroy
     * 11.WebServlet里面的地址必须唯一，必须以左斜杠开头/
     * 12.以后查询一般用get，更新（增加，修改，删除）一般用post
     * 13.涉及到密码等敏感信息则用post，设计到IO流用post
     *
     */
    /**
     * 2023-2-1 请求和响应
     * 1.请求行
     * 2.postman测试工具：浏览器默认只能是get方法访问，post方法不能访问
     * 3.访问后他：一般通过parm的形式传递参数（数据）
     * 4.Java 接收数据一般用req.getParameter("name");
     * 5.java 如果想要将对象转换为json对象{"key":"value}的形式，则需要进行封装
     * 6.Java没有自己的api，所以会引入第三方jar包
     * 7.fastjson，gson，
     * 8.以后前后端数据传递都通过json对象进行
     * 9.前后端相互交互：
     *      1）乱码处理
     *      2）得到前端的数据
     *      3）将数据封装到对象
     *      4）进行逻辑处理（service层）
     *      5）得到逻辑处理结果
     *      6）将最终结果以json对象传递给调用者（前端）
     * 10.java里面最好不要出现魔法值：容易经常改变的值：推荐用枚举
     * 11.第三阶段设计到jsp，涉及到页面转发，涉及到作用域，
     * 12.Java得到前端的数据：req.getParameter("username");这里的username对于的是页面里面的name属性
     * 13.jsp页面得到Java的数据${name}这里面的name对应的是req.setAttribute("name", username);
     * 14.servlet里面的三大作用域
     *      1）request  数据只能在转发的页面才能取到
     *      2）session  req.getSession()  数据可以在"任何"页面都可以取到（不能跨浏览器）
     *      3)application  req.getServletContext()  数据可以在任何页面都可以取到 （可以跨浏览器）
     * 15.  req对属性进行设置
     *         req.setAttribute("pass", pass);添加属性名
     *         req.getAttribute("name");根据属性名得到值
     *         req.removeAttribute("name");删除属性名
     * 16. resp.sendRedirect("/success.jsp");重定向
     * 17.页面转发和重定向的区别？
     * ----------------------------------------------
     * 请求：
     *  1）乱码
     *  2）得到前端数据getParameter,Map,queryString
     *  3）得到地址：URL,URI,
     *  4)作用域
     *  5）页面转发
     *  响应：重定向
     *  ------------------------------
     *
     *
     */
    /**
     * 2023-2-2 jsp
     * 1.Java特点：解耦  耦合度不能太高
     * 2.java 面需对象编程：Java封装
     * 3.java代码不要写页面，页面最好也不要写Java代码
     * 4.在写Javabean的时候，所有的属性都要写set和get方法，如果修改一个，则很难定位到某一行代码
     *      引入第三方框架：jar包 lombok
     * 5.Java传递集合或者数组到前端，前端也应该进行遍历数据
     *      jsp怎么遍历数据？jsp的标签库，需要引入jar包
     * 6.@Builder
     * 7.引入工具类：工具类一般情况下调用的时候不要创建新对象
     * 8.怎么才能让别人不能调用工具类创建新对象？
     * 9.增加思路？
     *      1.打开查询页面，点击新增按钮，跳转到新增页面
     *      2.在新增页面输入品牌信息，点击提交按钮
     *      3.在Java后台得到品牌信息，封装后进入逻辑层（service）
     *      4.在逻辑层处理增加信息，增加到一个集合的容器里面
     *      5.增加成功后应该返回成功页面：也可以直接返回到查询所有页面
     *      6.如果返回查询页面，则可以直接通过注解跳转到/show的servlet进行查询
     * 10.第三阶段做简单的jsp的逻辑思路
     *      1）因为所有的数据属于动态数据，则数据应该从Java后台来
     *          所以，第一次访问直接访问Java后台的servlet注解
     *      2）在servlet里面查询出所有数据，并存入req作用域，进行页面转发
     *      3）在jsp里面通过遍历显示数据
     *      ---------------------------------
     *      对包 的解释：
     *      servlet：和jsp页面相关 页面控制层
     *          1）处理乱码
     *          2）得到前端数据
     *          3）封装到model（实体类JavaBean）
     *          4）调用逻辑层处理逻辑关系
     *          5）处理完后，得到结果
     *          6）将结果转发到jsp页面
     *      service：逻辑关系处理  服务逻辑层
     *      dao：用来存放数据的地方  数据持久层
     *      model：对象层 实体类 JavaBean
     *      util 工具存放的地方  工具层
     * ----------------------------------------
     * 今日任务：将案例的增加和查询按照三层架构的方式做出来
     *
     */
    /**
     * 2023-2-3 项目改造
     * 1.MVC模式
     *     M：model  实体类
     *     V：view  视图  JSP页面
     *     C：controller  控制层 Servlet层 接收页面数据（请求）和返回页面数据（响应）
     * 2.三层架构
     *      表现层：可以理解为MVC里面的V和C：页面和servlet层
     *      逻辑层：处理逻辑的地方 service 层
     *      数据访问层：dao  处理数据的地方（存储数据的地方）
     *      DB：数据库
     * 3.新增思路：
     *      1）有一个页面：页面上有一个新增按钮
     *      2）点击新增按钮跳转到新增页面
     *      3）在新增页面点击提交按钮，讲表单里面的值传递到Java后台
     *      4）在Java后台servlet里面去拿到前端数据
     *          1：乱码处理  因为前端和后端交互会有中文出现
     *          2：得到前端的值  req.getParameter("");
     *          3:封装前端的值到model
     *          4：调用服务逻辑层（因为要处理一些逻辑代码）
     *          5：得到处理后的结果
     *          6：将结果返回给页面（跳转到查询页面）
     *       5）在service里面处理逻辑关系（将得到的数据保存到数据容器里面（集合list））
     *       6）在dao数据持久层 里面设置一个容器接收保存的数据
     * 4.查询思路：
     *      1：打开jsp页面？
     *          不能直接访问页面，因为页面的数据属于静态，则数据应该从Java后台来
     *          所以，只能访问Java后台，通过将查询出来的数据响应给前端（页面转发）
     *      1：用户直接访问Java后台的注解地址：
     *          正常情况下，这里面应该有六个步骤，
     *          这里不需要得到前端的值和封装到model
     *      2：其他和新增一样
     * -----------------------------------------------------------
     * 5.修改的思路：
     *      1）点击修改按钮跳转到修改页面
     *      2）将刚刚的数据放入修改页面
     *      3）点击修改
     *      4）返回查询页面
     *      -----------
     *      修改数据时，需要溢出list里面的数据，然后进行添加
     *      建议用Iterator<BrandModel>进行遍历
     *      BrandDao.brandModelList.set(1,model);这个不用移除数据，直接修改指定的数据
     *------------------------------------------------------
     * 第三阶段的目的：将页面上的所有静态数据转换为动态数据（Javaweb）
     * 1：思考：页面上哪些数据是需要转换的？
     * 2：怎么来做？
     * ---------------------------
     * 1)找到自己项目有哪些对象？
     *      写出对应的JavaBean
     * 2)将html修改为jsp页面(jsp的目的就是为了取消js而存在,所以页面上最好不要出现js)
     *      最上面一句话不同
     *      jsp并不一定能够完全替代js（因为优缺点，而且很多不能做）
     *      jsp也会设计到页面之间相互引入
     * 3）每一个页面对应一个Servlet
     *      所有的数据应该从后台读取
     *      6.返回数据到页面
     *      5.将数据封装到req
     *      4.数据来源于service
     *      3.不用封装
     *      2.不用再前端拿值
     *      1.需要乱码处理
     * 4)service  直接调用dao
     * 5)dao 存放数据
     * -------------------
     * 任务：将第三阶段页面所有的数据全部存到dao，通过jsp进行页面渲染
     *
     */
}
